package com.sheepone.java;

/**
 * @author Miss.杨
 * @description
 * @result
 * 1. 不管try块中是否存在异常，是否存在return语句，finally块中的代码都会执行。
 * 2. finally块中的语句在try/catch中的return语句之前执行，在执行finally语句块之前会将try/catch的返回结果做备份
 * 3. 即使在finally块中的语句对try/catch中的需要被return的结果做了修改，最终返回的结果依旧是try/catch中的原始返回结果
 * @since 2024/5/2 - 11:21
 */
public class No$1 {
    public static int test1() {
        int ret = 100;
        try {
            ret = ret / 0;
            return ret;
        } catch (Exception e) {
            return ret;
        } finally {
            return ret - 1;
        }
    }

    public static int test2() {
        int ret = 100;
        try {
            ret = ret / 0;
            return ret;
        } catch (Exception e) {
            return ret;
        } finally {
            ret -= 1;
            System.out.println("当try/catch块存在return语句时，finally语句依然会执行");//正常打印
        }
    }

    public static void main(String[] args) {
        System.out.println(test1());//99
        System.out.println(test2());//100
    }
}
